#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 练习题1：不能创建临时变量（第三个变量），实现两个数的交换。
//int main()
//{
//	int a = 3;
//	int b = 5;
//	// 方法1，相加
//	// 缺点：数字太大就会溢出
//	printf("a = %d b = %d\n", a, b);
//	a = a + b;
//	b = a - b;
//	a = a - b;
//	printf("a = %d b = %d\n", a, b);
//	// 方法2，异或，没啥缺点
//	printf("a = %d b = %d\n", a, b);
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("a = %d b = %d\n", a, b);
//	return 0;
//}
//---------------小分割线 >.< --------------------
// 练习题2：选择题与读程序题
//int main()
//{
//	  // 1.输出什么？
//    int arr[] = { 1,2,(3,4),5 };
//    printf("%d\n", sizeof(arr));//4*4=16
//	  // 2.输出什么？
//    char str[] = "hello world";
//    //[hello world\0]
//    printf("%d %d\n", sizeof(str), strlen(str));
//    //12 11
//    //strlen - 函数-求字符串长度的，找\0之前出现的字符个数
//    //sizeof - 操作符-计算变量/类型所占内存大小，单位是字节
//	  // 3.选择题
//    char acX[] = "abcdefg";//a b c d e f g \0
//    char acY[] = {'a','b','c','d','e','f','g' };
//    //A.数组acX和数组acY等价 no
//    //B.数组acX和数组acY的长度相同 no
//    //C.数组acX的长度大于数组acY的长度 yes
//    //D.数组acX的长度小于数组acY的长度 no
//	  // 4.哪一个是正确的初始化？
//    //int a[2][] = { {0,1,2},{3,4,5} };//no
//    //int a[][3] = { {0,1,2},{3,4,5} };//yes
//    //int a[2][4] = { {0,1,2},{3,4},{5} };//no
//    //int a[][3] = { {0,,2},{},{3,4,5} };//no
//    return 0;
//}

//---------------------------------------------小节分割线--------------------------------------------
// 练习题3：
// 实现函数init() 初始化数组为全0
// 实现print()  打印数组的每个元素
// 实现reverse()  函数完成数组元素的逆置。
//
//void init(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = 0;
//	}
//}
//void print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//void reverse(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//
//	while (left<right)
//	{
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//
//	print(arr, sz);
//	reverse(arr, sz);
//	print(arr, sz);
//	init(arr, sz);
//	print(arr, sz);
//
//	return 0;
//}
//

//---------------------------------------------小节分割线--------------------------------------------
// 练习题4：
//假设数组A和B一样大，交换两个数组之间的内容
//int main()
//{
//	int arr1[] = { 1,3,5,7,9 };
//	int arr2[] = { 2,4,6,8,10 };
//
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	int i = 0;
//
//	for (i = 0; i < sz; i++)
//	{
//		int tmp = arr1[i];
//		arr1[i] = arr2[i];
//		arr2[i] = tmp;
//	}
//	// 不能直接定义一个数组arr3来交换两个数组
//  // 因为数组名其实是首元素的地址，所以说只能每个元素的交换
//	return 0;
//}